#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/time.h>
#include <time.h>
#include <semaphore.h>
#include <errno.h>

#include "queue_char.h"


//comprueba si la cola está vacía
bool empty(queue_char * q)
{
    return (q->pwr == q->prd ? true : false);
}

//mete un dato en la cola
void push(queue_char * q, unsigned char dato)
{
    q->buffer[q->pwr] = dato;
    q->pwr = ++q->pwr % q->size;
}

//toma el último dato de la cola, y lo elimina
unsigned char pop(queue_char *q, bool eliminar)
{
    unsigned char dato= q->buffer[q->prd];
    if (eliminar)
	q->prd = ++q->prd % q->size;
    return dato;
}
    
    
unsigned char * init_queue (queue_char * q, int size)
{
    q->pwr = q->prd = 0;
    q->size = size;
    q->buffer = (unsigned char *)malloc(sizeof(unsigned char) * size);
    return q->buffer;
}

void close_queue(queue_char * q)
{
    free (q->buffer);
}
